<!DOCTYPE html>



  


<html class="theme-next muse use-motion" lang="zh-Hans">
<head>
  <meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta name="theme-color" content="#222">









<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
















  
  
  <link href="/blog/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />







<link href="/blog/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" />

<link href="/blog/css/main.css?v=5.1.4" rel="stylesheet" type="text/css" />


  <link rel="apple-touch-icon" sizes="180x180" href="/blog/images/apple-touch-icon-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="32x32" href="/blog/images/favicon-32x32-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="16x16" href="/blog/images/favicon-16x16-next.png?v=5.1.4">


  <link rel="mask-icon" href="/blog/images/logo.svg?v=5.1.4" color="#222">





  <meta name="keywords" content="Hexo, NexT" />










<meta name="description" content="Linphone是一个开源的VOIP框架，利用它提供的库能够快速构建一个VOIP的客户端. 虽然Linphone提供了iPhone版源码，但编译它还是遇到了不少问题，现将记录于此. 依赖库 cunit - c单元测试框架库 silk - skype自己的音频解码器 webrtc - 实时网页即时通信，是一个支持网页浏览器进行实时语音对话或视频对话的API x264 - 进行H.264/MPEG-4">
<meta property="og:type" content="article">
<meta property="og:title" content="MacOSX下编译linphone">
<meta property="og:url" content="http://smallmuou.gitee.io/blog/2015/02/02/2015-02-02-MacOSX下编译linphone/index.html">
<meta property="og:site_name" content="smallmuou&#39;s blog">
<meta property="og:description" content="Linphone是一个开源的VOIP框架，利用它提供的库能够快速构建一个VOIP的客户端. 虽然Linphone提供了iPhone版源码，但编译它还是遇到了不少问题，现将记录于此. 依赖库 cunit - c单元测试框架库 silk - skype自己的音频解码器 webrtc - 实时网页即时通信，是一个支持网页浏览器进行实时语音对话或视频对话的API x264 - 进行H.264/MPEG-4">
<meta property="og:locale" content="zh-Hans">
<meta property="og:updated_time" content="2020-04-16T01:15:21.868Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="MacOSX下编译linphone">
<meta name="twitter:description" content="Linphone是一个开源的VOIP框架，利用它提供的库能够快速构建一个VOIP的客户端. 虽然Linphone提供了iPhone版源码，但编译它还是遇到了不少问题，现将记录于此. 依赖库 cunit - c单元测试框架库 silk - skype自己的音频解码器 webrtc - 实时网页即时通信，是一个支持网页浏览器进行实时语音对话或视频对话的API x264 - 进行H.264/MPEG-4">



<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/blog/',
    scheme: 'Muse',
    version: '5.1.4',
    sidebar: {"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},
    fancybox: true,
    tabs: true,
    motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
    duoshuo: {
      userId: '0',
      author: '博主'
    },
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>



  <link rel="canonical" href="http://smallmuou.gitee.io/blog/2015/02/02/2015-02-02-MacOSX下编译linphone/"/>





  <title>MacOSX下编译linphone | smallmuou's blog</title>
  








</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">

  
  
    
  

  <div class="container sidebar-position-left page-post-detail">
    <div class="headband"></div>

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/blog/"  class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">smallmuou's blog</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
      
        <p class="site-subtitle"><a href="https://github.com/smallmuou">https://github.com/smallmuou</a></p>
      
  </div>

  <div class="site-nav-toggle">
    <button>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/blog/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-home"></i> <br />
            
            首页
          </a>
        </li>
      
        
        <li class="menu-item menu-item-archives">
          <a href="/blog/archives/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-archive"></i> <br />
            
            归档
          </a>
        </li>
      
        
        <li class="menu-item menu-item-categories">
          <a href="/blog/categories/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-th"></i> <br />
            
            分类
          </a>
        </li>
      
        
        <li class="menu-item menu-item-about">
          <a href="/blog/about/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-user"></i> <br />
            
            关于
          </a>
        </li>
      

      
    </ul>
  

  
</nav>



 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/02/02/2015-02-02-MacOSX下编译linphone/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">MacOSX下编译linphone</h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-02-02T00:00:00+08:00">
                2015-02-02
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/音视频/" itemprop="url" rel="index">
                    <span itemprop="name">音视频</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        <p>Linphone是一个开源的VOIP框架，利用它提供的库能够快速构建一个VOIP的客户端. 虽然Linphone提供了iPhone版源码，但编译它还是遇到了不少问题，现将记录于此.</p>
<h2 id="依赖库"><a href="#依赖库" class="headerlink" title="依赖库"></a>依赖库</h2><ul>
<li>cunit - c单元测试框架库</li>
<li>silk - skype自己的音频解码器</li>
<li>webrtc - 实时网页即时通信，是一个支持网页浏览器进行实时语音对话或视频对话的API</li>
<li>x264 - 进行H.264/MPEG-4 AVC的视频编码，而不是作为解码器（decoder）之用.</li>
<li>polarssl - 最小巧的ssl代码库。高效、便于移植和集成。尤其适合嵌入式应用</li>
<li>speex - Speex是一套主要针对语音的开源免费，无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 </li>
<li>srtp - VoIP网络很不安全，这也是限制VoIP发展的一个考虑因素。为了提供一种策略满足VoIP的安全，SRTP应运而生。所谓SRTP，即安全实时传输协议(Secure Real-time Transport<br>Protocol)，其是在实时传输协议(Real-time Transport Protocol)基础上所定义的一个协<br>议，旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保<br>证和重放保护。</li>
<li>ImageMagick - ImageMagick是一套功能强大、稳定而且开源的工具集和开发包，可以用来读、写和处理超过89种基本格式的图片文件，包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。</li>
<li>gsm - gsm音频编解码</li>
<li>libtool - 封装了不同平台动态链接库的差异，为开发人员提供统一接口</li>
<li>bcg729 - g729语音编解码库</li>
<li>belle-sip - SIP协议栈</li>
<li>amr - AMR即自适应多速率压缩（Adaptive multi-Rate compression）是一个使语音编码最优化的专利</li>
<li>ilbc - iLBC是一种专为包交换网络通信设计的编解码，优于目前流行的G.729、G.723.1，对丢包进行了特有处理，即使在丢包率 相当高的网络环境下，仍可获得非常清晰的语音效果。</li>
<li>openh264 - 思科的h264编解码器</li>
<li>antlr3 - 语言识别的一个工具 (ANother Tool for Language Recognition ) 是一种语言工具，它提供了一个框架，可以通过包含 Java, C++, 或 C# 动作（action）的语法描述来构造语言识别器，编译器和解释器。<ul>
<li>安装方法:<br><pre><br>下载jar文件，并拷贝到/usr/share/java目录下<br>sudo cp antlr-3.4-complete.jar /usr/share/java/antlr.jar<br></pre><br><strong> 注意:必须是3.4，否则可能会报_empty不存在 </strong></li>
</ul>
</li>
</ul>
<h2 id="Build-问题汇总"><a href="#Build-问题汇总" class="headerlink" title="Build 问题汇总"></a>Build 问题汇总</h2><h3 id="1-error-C-compiler-cannot-create-executables"><a href="#1-error-C-compiler-cannot-create-executables" class="headerlink" title="1. error: C compiler cannot create executables"></a>1. error: C compiler cannot create executables</h3><h5 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h5><pre>
checking whether the C compiler works... no
configure: error: in `/Users/starnet/Projects/linphone-iphone/submodules/build-i386-apple-darwin/externals/polarssl':
configure: error: C compiler cannot create executables
</pre>

<h5 id="分析"><a href="#分析" class="headerlink" title="分析"></a>分析</h5><pre>
clang -std=c99 -Qunused-arguments -Wno-unknown-warning-option -Wno-unused-command-line-argument-hard-error-in-future  -arch i386  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -mios-simulator-version-min=4.0 -DTARGET_OS_IPHONE=1 -D__IOS -fms-extensions -Dsha256=polarssl_sha256  -Dasm=__asm hello.c 
ld: -pie can only be used when targeting iOS 4.2 or later
clang: error: linker command failed with exit code 1 (use -v to see invocation)
</pre>
修改上述ios-simulator-version-min=4.2即可以通过编译

##### 处理
于是修改submodules/build/iphone-config.site的SDK_VERSION
<pre>
SDK_VERSION_MAJOR=4                                                              
SDK_VERSION=4.2   
</pre>

<h3 id="2-aclocal-error-aclocal-file-‘m4-lt-obsolete-m4’-does-not-exist"><a href="#2-aclocal-error-aclocal-file-‘m4-lt-obsolete-m4’-does-not-exist" class="headerlink" title="2. aclocal: error: aclocal: file ‘m4/lt~obsolete.m4’ does not exist"></a>2. aclocal: error: aclocal: file ‘m4/lt~obsolete.m4’ does not exist</h3><h5 id="问题-1"><a href="#问题-1" class="headerlink" title="问题"></a>问题</h5><pre>
-e  Running autogen for msopus in /Users/starnet/Projects/linphone-iphone/submodules/build/..//externals/opus 
cd /Users/starnet/Projects/linphone-iphone/submodules/build/..//externals/opus && ./autogen.sh
Updating build configuration files, please wait....
aclocal: error: aclocal: file 'm4/lt~obsolete.m4' does not exist
autoreconf: aclocal failed with exit status: 1
</pre>

<h5 id="分析-1"><a href="#分析-1" class="headerlink" title="分析"></a>分析</h5><p>分析发现/opt/local/share/aclocal/lt~obsolete.m4路径不存在，发现/usr/local/share/aclocal/存在，于是建立软连接</p>
<h5 id="处理"><a href="#处理" class="headerlink" title="处理"></a>处理</h5><pre>
sudo ln -s /usr/local/share/aclocal /opt/local/share/
</pre>

<h3 id="3-configure-error-GNU-gettext-tools-not-found-required-for-intltool"><a href="#3-configure-error-GNU-gettext-tools-not-found-required-for-intltool" class="headerlink" title="3. configure: error: GNU gettext tools not found; required for intltool"></a>3. configure: error: GNU gettext tools not found; required for intltool</h3><h5 id="问题-2"><a href="#问题-2" class="headerlink" title="问题"></a>问题</h5><pre>
configure: error: GNU gettext tools not found; required for intltool
</pre>
##### 分析
未安装gettext

##### 处理
<pre>
sudo brew install gettext
sudo ln -s /usr/local/Cellar/gettext/0.19.3_1/bin/msgmerge /usr/local/bin/
sudo ln -s /usr/local/Cellar/gettext/0.19.3_1/bin/msgfmt /usr/local/bin/
sudo ln -s /usr/local/Cellar/gettext/0.19.3_1/bin/xgettext /usr/local/bin/
</pre>

<h3 id="4-‘CoreFoundation-CFUserNotification-h’-file-not-found"><a href="#4-‘CoreFoundation-CFUserNotification-h’-file-not-found" class="headerlink" title="4. ‘CoreFoundation/CFUserNotification.h’ file not found"></a>4. ‘CoreFoundation/CFUserNotification.h’ file not found</h3><h5 id="问题-3"><a href="#问题-3" class="headerlink" title="问题"></a>问题</h5><pre>
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/CFNetwork.framework/Headers/CFHost.h:22:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:92:10: fatal error: 
      'CoreFoundation/CFUserNotification.h' file not found
#include <corefoundation cfusernotification.h="">
</corefoundation></pre>

<h5 id="分析-2"><a href="#分析-2" class="headerlink" title="分析"></a>分析</h5><p>查看CoreFoundation.h文件，发现TARGET_OS_IPHONE被重置为0，经过寻找是由于CFBase.h中调用的TargetConditionals.h是来自于MacOSX10.10的SDK下面，后面发现是由于指定了C_INCLUDE_PATH</p>
<pre>
declare -x C_INCLUDE_PATH="/Developer//Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/"
</pre>
##### 处理
直接export C_INCLUDE_PATH = ""

### 5. error: Libtool library used but 'LIBTOOL' is undefined

##### 问题
<pre>
CUnit/Sources/Automated/Makefile.am:3: error: Libtool library used but 'LIBTOOL' is undefined
CUnit/Sources/Automated/Makefile.am:3:   The usual way to define 'LIBTOOL' is to add 'LT_INIT'
CUnit/Sources/Automated/Makefile.am:3:   to 'configure.in' and run 'aclocal' and 'autoconf' again.
CUnit/Sources/Automated/Makefile.am:3:   If 'LT_INIT' is in 'configure.in', make sure
</pre>
##### 分析
aclocal是一个perl脚本程序，扫描configure.ac来创建aclocal.m4文件，以供autoconf来生成configure文件
'LIBTOOL' is undefined是由于aclocal找不到libtool宏，原因可能是没安装libtool或路径不对，aclocal -I可以制定m4文件路径

##### 处理
拷贝libtool下得m4文件到aclocal下
<pre>
sudo cp /usr/local/Cellar/libtool/2.4.2/share/aclocal/* /opt/local/share/aclocal/
</pre>

<h3 id="6-syntax-error-near-unexpected-token-am-api-version-’1-14’’"><a href="#6-syntax-error-near-unexpected-token-am-api-version-’1-14’’" class="headerlink" title="6. syntax error near unexpected token `am__api_version=’1.14’’"></a>6. syntax error near unexpected token `am__api_version=’1.14’’</h3><h5 id="问题-4"><a href="#问题-4" class="headerlink" title="问题"></a>问题</h5><pre>
/Users/starnet/Projects/linphone-iphone/submodules/build/..//belle-sip/configure: line 2637: syntax error near unexpected token \`am__api_version='1.14''
/Users/starnet/Projects/linphone-iphone/submodules/build/..//belle-sip/configure: line 2637: `am__api_version='1.14''
builders.d/belle-sip.mk:27: recipe for target '/Users/starnet/Projects/linphone-iphone/submodules/build/../build-i386-apple-darwin/belle-sip/Makefile' failed
make[1]: *** [/Users/starnet/Projects/linphone-iphone/submodules/build/../build-i386-apple-darwin/belle-sip/Makefile] Error 2
</pre>

<h5 id="分析-3"><a href="#分析-3" class="headerlink" title="分析"></a>分析</h5><p>测试发现是由于PKG_PROG_PKG_CONFIG() 未定义导致的，而PKG_PROG_PKG_CONFIG() 是存在于pkg.m4中（由pkg-config提供）</p>
<h5 id="处理-1"><a href="#处理-1" class="headerlink" title="处理"></a>处理</h5><p>通过aclocal -I或者将pkg.m4拷贝到aclocal的目录下</p>
<pre>
aclocal --print-ac-dir #可以查看aclocal目录
sudo cp /usr/local/Cellar/pkg-config/0.28/share/aclocal/pkg.m4 /opt/local/share/aclocal/
</pre>    

<h3 id="7-syntax-error-near-unexpected-token-MSGFMT-’"><a href="#7-syntax-error-near-unexpected-token-MSGFMT-’" class="headerlink" title="7. syntax error near unexpected token `MSGFMT,’"></a>7. syntax error near unexpected token `MSGFMT,’</h3><h5 id="问题-5"><a href="#问题-5" class="headerlink" title="问题"></a>问题</h5><pre>
/Users/starnet/Projects/linphone-iphone/submodules/build/..//linphone/mediastreamer2/configure: line 17534: syntax error near unexpected token `MSGFMT,'
/Users/starnet/Projects/linphone-iphone/submodules/build/..//linphone/mediastreamer2/configure: line 17534: `        AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,'
configure: error: /Users/starnet/Projects/linphone-iphone/submodules/build/..//linphone/mediastreamer2/configure failed for mediastreamer2
builder-iphone-os.mk:173: recipe for target '/Users/starnet/Projects/linphone-iphone/submodules/build/../build-i386-apple-darwin/linphone/Makefile' failed
make[1]: *** [/Users/starnet/Projects/linphone-iphone/submodules/build/../build-i386-apple-darwin/linphone/Makefile] Error 2
</pre>

<h5 id="分析-4"><a href="#分析-4" class="headerlink" title="分析"></a>分析</h5><p>测试发现是AM_PATH_PROG_WITH_TEST未定义，这个是在gettext的m4文件中定义</p>
<h5 id="处理-2"><a href="#处理-2" class="headerlink" title="处理"></a>处理</h5><p>拷贝m4到aclocal下</p>
<pre>
sudo cp /usr/local/Cellar/gettext/0.19.3_1/share/aclocal/* /opt/local/share/aclocal
</pre>

<h3 id="8-ld-illegal-text-relocation-to-‘-vp8-dequant-idct-add-mmx’"><a href="#8-ld-illegal-text-relocation-to-‘-vp8-dequant-idct-add-mmx’" class="headerlink" title="8. ld: illegal text-relocation to ‘_vp8_dequant_idct_add_mmx’"></a>8. ld: illegal text-relocation to ‘_vp8_dequant_idct_add_mmx’</h3><h5 id="问题-6"><a href="#问题-6" class="headerlink" title="问题"></a>问题</h5><pre>
ld: illegal text-relocation to '_vp8_dequant_idct_add_mmx' in /Users/starnet/Projects/linphone-iphone/liblinphone-sdk/i386-apple-darwin/lib/libvpx.a(dequantize_mmx.asm.o) from '_vp8_dequant_idct_add_mmx' in /Users/starnet/Projects/linphone-iphone/liblinphone-sdk/i386-apple-darwin/lib/libvpx.a(dequantize_mmx.asm.o) for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
</pre>

<h5 id="分析-5"><a href="#分析-5" class="headerlink" title="分析"></a>分析</h5><p><a href="http://stackoverflow.com/questions/6650178/illegal-text-reloc-to-non-lazy-ptr-error-while-building-in-xcode-4-with-libav-l" target="_blank" rel="noopener">这里</a>有关于illegal text-relocation的说明<br>大致意思：当一个全局变量被编译到动态库中，而第三方asm代码需要引用该变量时，连接器会把相对地址付给相应引用，当他们处于一个连接单元时，则不会有问题，当不同单元则就会出问题；应该是连接器的一个bug</p>
<h5 id="处理-3"><a href="#处理-3" class="headerlink" title="处理"></a>处理</h5><p>(1) 编辑linphone/mediastreamer2/tester/Makefile.am, 为AM_LDFLAGS添加-read_only_relocs suppress</p>
<pre>
 AM_LDFLAGS=-no-undefined -export-dynamic -read_only_relocs suppress
</pre>
(2) 编辑linphone/coreapi/Makefile.am
<pre>
AM_LDFLAGS= -read_only_relocs suppress
</pre>

<h3 id="9-extract-cfile-awk无法下载"><a href="#9-extract-cfile-awk无法下载" class="headerlink" title="9. extract-cfile.awk无法下载"></a>9. extract-cfile.awk无法下载</h3><h5 id="问题-7"><a href="#问题-7" class="headerlink" title="问题"></a>问题</h5><pre>
/usr/local/bin/wget --no-check-certificate http://www.webrtc.org/ilbc-freeware/ilbc-source-code-and-utili/ilbc-utilities/extract-cfile.awk -O extract-cfile.awk
--2015-02-04 12:59:41--  http://www.webrtc.org/ilbc-freeware/ilbc-source-code-and-utili/ilbc-utilities/extract-cfile.awk
Resolving www.webrtc.org... 74.125.23.121
Connecting to www.webrtc.org|74.125.23.121|:80... 
</pre>

<h5 id="分析-6"><a href="#分析-6" class="headerlink" title="分析"></a>分析</h5><p>链接不存在</p>
<h5 id="处理-4"><a href="#处理-4" class="headerlink" title="处理"></a>处理</h5><p>到<a href="http://www.ilbcfreeware.org下载extract-cfile.txt，拷贝到上传到可用的服务器，这里我上传到github，地址http://7ximmr.com1.z0.glb.clouddn.com/extract-cfile.awk" target="_blank" rel="noopener">www.ilbcfreeware.org下载extract-cfile.txt，拷贝到上传到可用的服务器，这里我上传到github，地址http://7ximmr.com1.z0.glb.clouddn.com/extract-cfile.awk</a><br>编辑submodules/libilbc-rfc3951/downloads/Makefile.am</p>
<pre>
extract_script = extract-cfile.awk
extract_script_url = https://github.com/wenva/wenva.github.com/raw/master/resource/$(extract_script)
</pre>

<h3 id="10-No-working-C-compiler-found"><a href="#10-No-working-C-compiler-found" class="headerlink" title="10. No working C compiler found."></a>10. No working C compiler found.</h3><h5 id="问题-8"><a href="#问题-8" class="headerlink" title="问题"></a>问题</h5><pre>
./configure --prefix=/Users/starnet/Projects/linphone-iphone/submodules/build/..//../liblinphone-sdk/i386-apple-darwin  --host=i386-apple-darwin --enable-static --enable-pic --cross-prefix=$SDK_BIN_PATH/ --extra-ldflags="$COMMON_FLAGS" --extra-cflags="$COMMON_FLAGS "
Loading config.site for iPhone platform=Simulator version=4.2
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
Selecting SDK path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
No working C compiler found.
</pre>

<h5 id="分析-7"><a href="#分析-7" class="headerlink" title="分析"></a>分析</h5><p>查看configure文件</p>
<pre>
...
if $cc_cmd >conftest.log 2>&1; then                                          
...
</pre>
即结果导入conftest.log, 发现如下
<pre>
clang: error: unknown argument: '-falign-loops=16' 
</pre>
即clang不支持-falign-loops

##### 处理

删除submodules/build-i386-apple-darwin/externals/x264
编辑submodules/externals/x264/configure，去除-falign-loops
<pre>
457     darwin*)                                                                     
458         SYS="MACOSX"                                                             
459  #       CFLAGS="$CFLAGS -falign-loops=16"                                       
460         libm="-lm"         
</pre>

<h3 id="11-compile-unable-to-infer-tagged-configuration"><a href="#11-compile-unable-to-infer-tagged-configuration" class="headerlink" title="11. compile: unable to infer tagged configuration"></a>11. compile: unable to infer tagged configuration</h3><h5 id="问题-9"><a href="#问题-9" class="headerlink" title="问题"></a>问题</h5><pre>
libtool: compile: unable to infer tagged configuration
libtool: compile: specify a tag with `--tag'
Makefile:1039: recipe for target 'backgroundtask.lo' failed
make[1]: *** [backgroundtask.lo] Error 1
</pre>

<h5 id="分析-8"><a href="#分析-8" class="headerlink" title="分析"></a>分析</h5><p>如果使用的compiler不是gcc, libtool会认错，需要添加参数–tag=CXX或–tag=CC</p>
<h5 id="处理-5"><a href="#处理-5" class="headerlink" title="处理"></a>处理</h5><pre>
LTOBJCCOMPILE = $(LIBTOOL) $(AM_V_lt) <font color="ff0000"> --tag=CC </font>$(AM_LIBTOOLFLAGS) \ 
...
OBJCLINK = $(LIBTOOL) $(AM_V_lt) <font color="ff0000"> --tag=CC </font> $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS)
...
</pre>

<h3 id="12-Applications-Xcode-app-Contents-Developer-Platforms-iPhoneSimulator-platform-Developer-usr-bin-strings-No-such-file-or-directory"><a href="#12-Applications-Xcode-app-Contents-Developer-Platforms-iPhoneSimulator-platform-Developer-usr-bin-strings-No-such-file-or-directory" class="headerlink" title="12. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings: No such file or directory"></a>12. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings: No such file or directory</h3><pre>
Selecting SDK path = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk
./configure: line 730: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings: No such file or directory
./configure: line 732: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings: No such file or directory
endian test failed
builders.d/x264.mk:53: recipe for target '/Users/starnet/Projects/linphone-iphone/submodules/build/../build-i386-apple-darwin/externals/x264/config.mak' failed
</pre>
解决：
建立软连接
<pre>
sudo ln -s /Applications/Xcode.app/Contents/Developer//Toolchains/XcodeDefault.xctoolchain/usr/bin/strings /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/
</pre>

<h3 id="13-ld-illegal-text-relocation-to-‘-x264-cabac-range-lps’"><a href="#13-ld-illegal-text-relocation-to-‘-x264-cabac-range-lps’" class="headerlink" title="13.ld: illegal text-relocation to ‘_x264_cabac_range_lps’"></a>13.ld: illegal text-relocation to ‘_x264_cabac_range_lps’</h3><p>问题</p>
<pre>
ld: illegal text-relocation to '_x264_cabac_range_lps' in libx264.a(cabac.o) from '_x264_cabac_encode_decision_asm' in libx264.a(cabac-a.o) for architecture i386
</pre>
编辑submodules/externals/x264/configure
<pre>
LDFLAGS="$LDFLAGS -read_only_relocs suppress" 
</pre>

<h2 id="运行问题汇总"><a href="#运行问题汇总" class="headerlink" title="运行问题汇总"></a>运行问题汇总</h2><h3 id="1-登录时crash"><a href="#1-登录时crash" class="headerlink" title="1. 登录时crash"></a>1. 登录时crash</h3><h5 id="问题-10"><a href="#问题-10" class="headerlink" title="问题"></a>问题</h5><pre>
belle_sip_object_vptr_t *vptr=obj->vptr; 崩溃
</pre>

<h5 id="分析-9"><a href="#分析-9" class="headerlink" title="分析"></a>分析</h5><p>调用栈:从下到上</p>
<pre>
belle_sip_object_marshal
sal_address_as_string
sal_op_set_route_address
sal_op_add_route_address
linphone_transfer_routes_to_op
linphone_configure_op
linphone_proxy_config_register
linphone_proxy_config_update
ms_list_for_each
proxy_update
linphone_core_iterate
[LinphoneManager iterate]
</pre>

<p>相关结构体</p>
<pre>
struct _belle_sip_object_vptr{
    belle_sip_type_id_t id;
    const char *type_name;
    int initially_unowned;
    belle_sip_object_get_vptr_t get_parent;
    struct belle_sip_interface_desc **interfaces; /*NULL terminated table of */
    belle_sip_object_destroy_t destroy;
    belle_sip_object_clone_t clone;
    belle_sip_object_marshal_t marshal;
    int tostring_bufsize_hint; /*optimization: you can suggest here the typical size for a to_string() result.*/
};

struct _belle_sip_object{
    belle_sip_object_vptr_t *vptr;
    size_t size;
    int ref;
    char* name;
    struct weak_ref *weak_refs;
    struct belle_sip_object_pool *pool;
    struct _belle_sip_list *pool_iterator;
    struct _belle_sip_list *data_store;
};

</pre>

<p>通过分析发现是由于sal_address_destroy释放一个空指针，应该是linphone的bug，目前通过如下方式解决:<br>修改submodules/linphone/coreapi/bellesip_sal/sal_address_impl.c </p>
<pre>
void sal_address_destroy(SalAddress *addr){
    if (addr) sal_address_unref(addr);
}
</pre>



<h3 id="2-ortp-warning-There-is-no-object-pool-created-in-thread-43003904-Use-belle-sip-object-pool-push-to-create-one-Unowned-objects-not-unref’d-will-be-leaked"><a href="#2-ortp-warning-There-is-no-object-pool-created-in-thread-43003904-Use-belle-sip-object-pool-push-to-create-one-Unowned-objects-not-unref’d-will-be-leaked" class="headerlink" title="2. ortp-warning-There is no object pool created in thread [43003904]. Use belle_sip_object_pool_push() to create one. Unowned objects not unref’d will be leaked."></a>2. ortp-warning-There is no object pool created in thread [43003904]. Use belle_sip_object_pool_push() to create one. Unowned objects not unref’d will be leaked.</h3><p>定位在belle-sip/belle_sip_object.c -&gt; get_current_pool_stack -》 belle_sip_thread_getspecific</p>
<p>belle_sip_thread_getspecific在传入相同值，返回的结果有时会不一样，部分情况返回NULL，于是导致后面的代码出错，目前暂未找到根本原因，暂时对后面crash的地方进行参数判断.</p>
<ul>
<li>belle_sip_header_address_get_uri<pre>
belle_sip_uri_t* belle_sip_header_address_get_uri(const belle_sip_header_address_t* address) {
  return address ? address->uri : NULL;//此处添加判断
}
</pre></li>
<li><p>sal_address_impl.c -&gt; sal_address_as_string_uri_only</p>
<pre>
char *sal_address_as_string_uri_only(const SalAddress *addr){
  belle_sip_header_address_t* header_addr = BELLE_SIP_HEADER_ADDRESS(addr);
  belle_sip_uri_t* uri = belle_sip_header_address_get_uri(header_addr);
  if (!uri) return NULL;//此次添加判断

  char tmp[1024]={0};
  size_t off=0;
  belle_sip_object_marshal((belle_sip_object_t*)uri,tmp,sizeof(tmp),&off);
  return ms_strdup(tmp);
}
</pre>

</li>
</ul>
<p>此问题已解决，详情猛戳<a href="http://wenva.github.io/ios/2015/04/08/%E7%BA%BF%E7%A8%8B%E5%B1%80%E9%83%A8%E5%AD%98%E5%82%A8.html" target="_blank" rel="noopener">这里</a></p>

      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      
      
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/blog/2014/12/22/2014-12-22-UITabbarItem图标要求/" rel="next" title="UITabbarItem图标要求">
                <i class="fa fa-chevron-left"></i> UITabbarItem图标要求
              </a>
            
          </div>

          <span class="post-nav-divider"></span>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/blog/2015/02/05/2015-02-05-牛逼的ImageMagick/" rel="prev" title="牛逼的ImageMagick">
                牛逼的ImageMagick <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </div>
  
  
  
  </article>



    <div class="post-spread">
      
    </div>
  </div>


          </div>
          


          

        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    
    <div class="sidebar-inner">

      

      
        <ul class="sidebar-nav motion-element">
          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap">
            文章目录
          </li>
          <li class="sidebar-nav-overview" data-target="site-overview-wrap">
            站点概览
          </li>
        </ul>
      

      <section class="site-overview-wrap sidebar-panel">
        <div class="site-overview">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            
              <p class="site-author-name" itemprop="name">smallmuou</p>
              <p class="site-description motion-element" itemprop="description"></p>
          </div>

          <nav class="site-state motion-element">

            
              <div class="site-state-item site-state-posts">
              
                <a href="/blog/archives/">
              
                  <span class="site-state-item-count">197</span>
                  <span class="site-state-item-name">日志</span>
                </a>
              </div>
            

            
              
              
              <div class="site-state-item site-state-categories">
                <a href="/blog/categories/index.html">
                  <span class="site-state-item-count">12</span>
                  <span class="site-state-item-name">分类</span>
                </a>
              </div>
            

            

          </nav>

          

          
            <div class="links-of-author motion-element">
                
                  <span class="links-of-author-item">
                    <a href="https://github.com/smallmuou" target="_blank" title="GitHub">
                      
                        <i class="fa fa-fw fa-globe"></i>GitHub</a>
                  </span>
                
            </div>
          

          
          

          
          

          

        </div>
      </section>

      
      <!--noindex-->
        <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
          <div class="post-toc">

            
              
            

            
              <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#依赖库"><span class="nav-number">1.</span> <span class="nav-text">依赖库</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Build-问题汇总"><span class="nav-number">2.</span> <span class="nav-text">Build 问题汇总</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#1-error-C-compiler-cannot-create-executables"><span class="nav-number">2.1.</span> <span class="nav-text">1. error: C compiler cannot create executables</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题"><span class="nav-number">2.1.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析"><span class="nav-number">2.1.0.2.</span> <span class="nav-text">分析</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#2-aclocal-error-aclocal-file-‘m4-lt-obsolete-m4’-does-not-exist"><span class="nav-number">2.2.</span> <span class="nav-text">2. aclocal: error: aclocal: file ‘m4/lt~obsolete.m4’ does not exist</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-1"><span class="nav-number">2.2.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-1"><span class="nav-number">2.2.0.2.</span> <span class="nav-text">分析</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#处理"><span class="nav-number">2.2.0.3.</span> <span class="nav-text">处理</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#3-configure-error-GNU-gettext-tools-not-found-required-for-intltool"><span class="nav-number">2.3.</span> <span class="nav-text">3. configure: error: GNU gettext tools not found; required for intltool</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-2"><span class="nav-number">2.3.0.1.</span> <span class="nav-text">问题</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#4-‘CoreFoundation-CFUserNotification-h’-file-not-found"><span class="nav-number">2.4.</span> <span class="nav-text">4. ‘CoreFoundation/CFUserNotification.h’ file not found</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-3"><span class="nav-number">2.4.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-2"><span class="nav-number">2.4.0.2.</span> <span class="nav-text">分析</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#6-syntax-error-near-unexpected-token-am-api-version-’1-14’’"><span class="nav-number">2.5.</span> <span class="nav-text">6. syntax error near unexpected token `am__api_version=’1.14’’</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-4"><span class="nav-number">2.5.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-3"><span class="nav-number">2.5.0.2.</span> <span class="nav-text">分析</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#处理-1"><span class="nav-number">2.5.0.3.</span> <span class="nav-text">处理</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#7-syntax-error-near-unexpected-token-MSGFMT-’"><span class="nav-number">2.6.</span> <span class="nav-text">7. syntax error near unexpected token `MSGFMT,’</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-5"><span class="nav-number">2.6.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-4"><span class="nav-number">2.6.0.2.</span> <span class="nav-text">分析</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#处理-2"><span class="nav-number">2.6.0.3.</span> <span class="nav-text">处理</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#8-ld-illegal-text-relocation-to-‘-vp8-dequant-idct-add-mmx’"><span class="nav-number">2.7.</span> <span class="nav-text">8. ld: illegal text-relocation to ‘_vp8_dequant_idct_add_mmx’</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-6"><span class="nav-number">2.7.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-5"><span class="nav-number">2.7.0.2.</span> <span class="nav-text">分析</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#处理-3"><span class="nav-number">2.7.0.3.</span> <span class="nav-text">处理</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#9-extract-cfile-awk无法下载"><span class="nav-number">2.8.</span> <span class="nav-text">9. extract-cfile.awk无法下载</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-7"><span class="nav-number">2.8.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-6"><span class="nav-number">2.8.0.2.</span> <span class="nav-text">分析</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#处理-4"><span class="nav-number">2.8.0.3.</span> <span class="nav-text">处理</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#10-No-working-C-compiler-found"><span class="nav-number">2.9.</span> <span class="nav-text">10. No working C compiler found.</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-8"><span class="nav-number">2.9.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-7"><span class="nav-number">2.9.0.2.</span> <span class="nav-text">分析</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#11-compile-unable-to-infer-tagged-configuration"><span class="nav-number">2.10.</span> <span class="nav-text">11. compile: unable to infer tagged configuration</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-9"><span class="nav-number">2.10.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-8"><span class="nav-number">2.10.0.2.</span> <span class="nav-text">分析</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#处理-5"><span class="nav-number">2.10.0.3.</span> <span class="nav-text">处理</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#12-Applications-Xcode-app-Contents-Developer-Platforms-iPhoneSimulator-platform-Developer-usr-bin-strings-No-such-file-or-directory"><span class="nav-number">2.11.</span> <span class="nav-text">12. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings: No such file or directory</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#13-ld-illegal-text-relocation-to-‘-x264-cabac-range-lps’"><span class="nav-number">2.12.</span> <span class="nav-text">13.ld: illegal text-relocation to ‘_x264_cabac_range_lps’</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#运行问题汇总"><span class="nav-number">3.</span> <span class="nav-text">运行问题汇总</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#1-登录时crash"><span class="nav-number">3.1.</span> <span class="nav-text">1. 登录时crash</span></a><ol class="nav-child"><li class="nav-item nav-level-5"><a class="nav-link" href="#问题-10"><span class="nav-number">3.1.0.1.</span> <span class="nav-text">问题</span></a></li><li class="nav-item nav-level-5"><a class="nav-link" href="#分析-9"><span class="nav-number">3.1.0.2.</span> <span class="nav-text">分析</span></a></li></ol></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#2-ortp-warning-There-is-no-object-pool-created-in-thread-43003904-Use-belle-sip-object-pool-push-to-create-one-Unowned-objects-not-unref’d-will-be-leaked"><span class="nav-number">3.2.</span> <span class="nav-text">2. ortp-warning-There is no object pool created in thread [43003904]. Use belle_sip_object_pool_push() to create one. Unowned objects not unref’d will be leaked.</span></a></li></ol></li></ol></div>
            

          </div>
        </section>
      <!--/noindex-->
      

      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <div class="copyright">&copy; <span itemprop="copyrightYear">2020</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">smallmuou</span>

  
</div>

    <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>

    <span id="busuanzi_container_site_pv">总访问量<span id="busuanzi_value_site_pv"></span>次</span>
    <span class="post-meta-divider">|</span>



  <div class="powered-by">由 <a class="theme-link" target="_blank" href="https://hexo.io">Hexo</a> 强力驱动</div>



  <span class="post-meta-divider">|</span>



  <div class="theme-info">主题 &mdash; <a class="theme-link" target="_blank" href="https://github.com/iissnan/hexo-theme-next">NexT.Muse</a> v5.1.4</div>




        







        
      </div>
    </footer>

    
      <div class="back-to-top">
        <i class="fa fa-arrow-up"></i>
        
      </div>
    

    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  












  
  
    <script type="text/javascript" src="/blog/lib/jquery/index.js?v=2.1.3"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/velocity/velocity.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
  


  


  <script type="text/javascript" src="/blog/js/src/utils.js?v=5.1.4"></script>

  <script type="text/javascript" src="/blog/js/src/motion.js?v=5.1.4"></script>



  
  

  
  <script type="text/javascript" src="/blog/js/src/scrollspy.js?v=5.1.4"></script>
<script type="text/javascript" src="/blog/js/src/post-details.js?v=5.1.4"></script>



  


  <script type="text/javascript" src="/blog/js/src/bootstrap.js?v=5.1.4"></script>



  


  




	





  





  












  





  

  

  

  
  

  

  

  

</body>
</html>
